#include<iostream>
using namespace std;

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
//class Solution {
//public:
//    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
//        ListNode* cur1 = l1, * cur2 = l2;
//        int t = 0;
//        ListNode* newhead = new ListNode(-1);
//        ListNode* head = newhead;
//        while (cur1 || cur2 || t)
//        {
//            if (cur1)
//            {
//                t += cur1->val;
//                cur1 = cur1->next;
//            }
//            if (cur2)
//            {
//                t += cur2->val;
//                cur2 = cur2->next;
//            }
//            ListNode* newnode = new ListNode(t % 10);
//            t /= 10;
//            head->next = newnode;
//            head = newnode;
//
//        }
//        head = newhead->next;
//        delete newhead;
//        return head;
//    }
//};